package com.example.yyjc.mapper;

import com.example.yyjc.domain.countryanalyze.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName CountryMapper
 * @Description TODO
 * @Author lvyongwei
 * @Date 2020-11-11 14:24
 **/
@Mapper
public interface CountryMapper {

    /**
     * 获取所有城市名称
     * @param time
     * @return
     */
    public List<String> getAllCountry(String time);

    /**
     * 获取所有日期
     * @return
     */
    public List<String> getAllTime();

    /**
     * 获取所有日期 升序
     * @param beginTime
     * @param endTime
     * @return
     */
    public List<String> getAllTimeAsc(@Param("beginTime")String beginTime,@Param("endTime")String endTime);

    /**
     * 获取所有日期 升序
     * @return
     */
    public List<String> getAllTimeAsc2();

    /**
     * 获取所有城市订单数量
     * @param time
     * @return
     */
    public List<Country> getCountryOrderCount(String time);

    /**
     * 获取前十国家名称
     * @return
     */
    public List<String> getCountryName(String time);

    /**
     * 获取时间内所有的信息
     * @param countryName
     * @param times
     * @return
     */
    public List<Double> getCountryOrderCountByTime(@Param("countryName")String countryName,@Param("times")List<String> times);

    /**
     * 获取商品订单区间
     * @param countryName 国家名称
     * @return
     */
    public List<String> getOrderAnalysis(String countryName);

    /**
     * 获取各个月份国家订单区间商品数量
     * @param times
     * @param orderCountLimit
     * @param countryName
     * @return
     */
    public List<Double> getOrderGoodsCount(@Param("times") List<String> times, @Param("orderCountLimit") String orderCountLimit, @Param("countryName") String countryName);

    /**
     * 获取各个月份国家订单区间商品数量占比
     * @param times
     * @param orderCountLimit
     * @param countryName
     * @return
     */
    public List<Double> getOrderGoodsCountScale(@Param("times") List<String> times, @Param("orderCountLimit") String orderCountLimit,@Param("countryName") String countryName);

    /**
     * 获取商品价格区间
     * @param countryName 国家名称
     * @return
     */
    public List<String> getPriceAnalysis(String countryName);

    /**
     * 获取各个月份国家价格区间商品数量
     * @param times
     * @param priceCountLimit
     * @param countryName
     * @return
     */
    public List<Double> getPriceGoodsCount(@Param("times") List<String> times, @Param("priceCountLimit") String priceCountLimit, @Param("countryName") String countryName);

    /**
     * 获取各个月份国家价格区间商品数量占比
     * @param times
     * @param priceCountLimit
     * @param countryName
     * @return
     */
    public List<Double> getPriceGoodsCountScale(@Param("times") List<String> times, @Param("priceCountLimit") String priceCountLimit,@Param("countryName") String countryName);

    /**
     * 获取各个月份国家价格区间订单数量
     * @param times
     * @param priceCountLimit
     * @param countryName
     * @return
     */
    public List<Double> getPriceOrderCount(@Param("times") List<String> times, @Param("priceCountLimit") String priceCountLimit, @Param("countryName") String countryName);

    /**
     * 获取各个月份国家价格区间订单数量占比
     * @param times
     * @param priceCountLimit
     * @param countryName
     * @return
     */
    public List<PriceCountAnalysis> getPriceOrderCountScale(@Param("times") List<String> times, @Param("priceCountLimit") String priceCountLimit,@Param("countryName") String countryName);

    /**
     * 获取某个国家月份的一级类目比例
     * @param countryName
     * @param time
     * @return
     */
    public List<MainTitleScale> getMainTitle(@Param("countryName")String countryName, @Param("time")String time);

    /**
     * 获取所有一级类目
     * @return
     */
    public List<String> getAllMainTitle();

    /**
     * 获取国家一级类目各个月份销售额
     * @param countryName
     * @param time
     * @param mainTitle
     * @return
     */
    public List<MainTitleScale> getMainTitleTurnVolume(@Param("countryName")String countryName,@Param("times")List<String> time,@Param("mainTitle")String mainTitle);

    /**
     * 获取物流分析
     * @param time
     * @param countryName
     * @return
     */
    public List<LogisticsOrder> getLogistics(@Param("time")String time, @Param("countryName")String countryName);

    /**
     * 获取国家每个月前五的物流名称
     * @param time
     * @param countryName
     * @return
     */
    public List<String> getLogisticsNameByCount(@Param("time")String time,@Param("countryName")String countryName);

    /**
     * 获取top5分布
     * @param times
     * @param countryName
     * @param logisticsName
     * @return
     */
    public List<Integer> getLogisticsLimit(@Param("times")List<String> times,@Param("countryName")String countryName,@Param("logisticsName") String logisticsName);

    /**
     * 获取前十店铺信息
     * @param time
     * @param countryName
     * @return
     */
    public List<ShopTopTen> getShopTen(@Param("time")String time,@Param("countryName")String countryName);

    /**
     * 获取前十商品信息
     * @param time
     * @param countryName
     * @return
     */
    public List<GoodsTopTen> getGoodsTen(@Param("time")String time, @Param("countryName")String countryName);

    /**
     * 获取某个月份国家top1店铺信息
     * @param time
     * @param countryName
     * @return
     */
    public List<CountryTopOneShop> getTopOneShopCase(@Param("time")String time, @Param("countryName")String countryName);

    /**
     * 获取某个月份某个国家第一店铺名字
     * @param time
     * @param countryName
     * @return
     */
    public String getTopOneShop(@Param("time")String time, @Param("countryName")String countryName);

    /**
     * 获取第一店铺宝贝
     * @param shopName
     * @return
     */
    public List<CountryToponeShopMsg> getShops(String shopName);
}
